home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 27 / CU Amiga Magazine's Super CD-ROM 27 (1998)(EMAP Images)(GB)[!][issue 1998-10].iso / CUCD / Programming / FreshBar / Source / ARexxPort.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-05-29  |  1.9 KB  |  64 lines

  1. //****************************************************************//
  2. // Filename:    ARexxPort.h
  3. // Autor:       Christian Taulien of Strange Intelligence
  4. // Purpose:     Definition of an ARexxPort-Class
  5. // Creation:    10. Mai 1998
  6. //****************************************************************//
  7. #ifndef AREXXPORT_H
  8. #define AREXXPORT_H
  9.  
  10. #include <exec/types.h>
  11. #include <exec/ports.h>
  12. #include <dos/rdargs.h>
  13.  
  14. #include "SIFC_Strings.h"
  15.  
  16. struct ARexxCommand
  17. {
  18.   char *m_sName;
  19.   char *m_sArgs;
  20.   ULONG m_ulCommandID;
  21. };
  22.  
  23. class ARexxPortC
  24. {
  25. private:
  26.   // ## private datamembers ##
  27.   struct ARexxCommand **m_ppoCommands;
  28.   struct MsgPort       *m_poPort;
  29.   struct RDArgs        *m_poRDArgs;
  30.   StringC m_oPortName;
  31.   BOOL    m_bPortInstalled;
  32.   BOOL    m_bProcessing;
  33.  
  34. protected:
  35.   // ## protected methods ##
  36.   void replyRexxCommand(struct RexxMsg *arg_poRexxMsg,
  37.                         LONG arg_lPrimary,
  38.                         LONG arg_lSecondary,
  39.                         char *arg_sResult);
  40.   void closeDownARexxHost(void);
  41.   BOOL setupARexxHost(char *arg_sPortName);
  42.   virtual struct ARexxCommand *findARexxCommand(StringC &arg_roCmdName);
  43.   virtual BOOL doRXCommand(struct RexxMsg *arg_poARexxMsg);
  44.   virtual BOOL dispatchARexxCommand(ULONG arg_ulCmdID,
  45.                                     LONG *arg_alArgArray,
  46.                                     LONG &arg_rlRC,
  47.                                     LONG &arg_rlRC2,
  48.                                     StringC &roResult);
  49.  
  50. public:
  51.   // ## public methods ##
  52.   ARexxPortC(char *arg_sPortName, struct ARexxCommand **arg_ppoCommands);
  53.   virtual ~ARexxPortC();
  54.  
  55.   BOOL processARexxCommand(void);
  56.   void setCommandList(struct ARexxCommand **arg_ppoCommands)
  57.                                { m_ppoCommands = arg_ppoCommands; }
  58.   BOOL isOpen()                { return m_bPortInstalled; }
  59.   BOOL isProcessing()          { return m_bProcessing; }
  60.   struct MsgPort *getMsgPort() { return m_poPort; }
  61. };
  62.  
  63. #endif // AREXXPORT_H
  64.